/*
TO DO:
    jonak tunik
*/

#include "Librarian.h"
#include <fstream>
#include <cstdlib>

using namespace std;


Librarian::Librarian()
{
    std::ifstream LoginFile; // bejelentkezesi adatokat tartalmazo fajl
    LoginFile.open("librarian.dat");
    if(LoginFile.is_open()) // ha sikerult a fajl megnyitasa
    {
        while( LoginFile.good() )
        {
            string tmp; // string temp
            getline( LoginFile, tmp, ';' ); // felhasznalonev beolvasasa
            if( tmp!="" ) // ha nem ures a beolvasott temp, akkor elrakjuk
            {
                Names.push_back(tmp);
            }
            getline( LoginFile, tmp, '\n' ); // jelszo beolvasasa
            if( tmp!="" ) // ha nem ures a beolvasott temp, akkor elrakjuk
            {
                Passwords.push_back(tmp);
            }
        }
        LoginFile.close(); // bezarjuk a fajlt
        if( Names.size() != Passwords.size() || Names.size() == 0 ) throw BAD_INPUT; // ha hibas a belepesi adatokat tartalmazo fajl
    }
    else throw MISSING_FILE; // ha nincs meg a fajl
}


bool Librarian::Login(const string& LoginName, const string& LoginPassword) // bejelentkezes a parameterekkel
{
    bool ok = false;
    for( unsigned int i=0; i<Names.size(); ++i )
    {
        if( LoginName == Names[i] && LoginPassword == Passwords[i] )
        {
            ok = true;
            break;
        }
    }
    return ok;
}


bool Librarian::Login() // bejelentkezes bekert adatokkal
{
    string LoginName;
    string LoginPassword;
    bool ok = false;
    int i = 0; // belepesi probalkozasok szama
    do
    {
        if( ok == false && i != 0 ) // ha mar volt rossz bejelentkezesi kiserlet
        {
            cout << "Wrong login name or password! You have only " << 3-i << " chance(s) left." << endl; // tajekoztatas a fennmarado lehetosegek szamarol
        }
        cout << endl << "Login name: "; // felhasznalonev bekerese
        getline(cin, LoginName);
        cout << "Password: "; // jelszo bekerese
        getline(cin, LoginPassword);
        ok = Librarian::Login(LoginName, LoginPassword); // ellenorzes a parameteres fv-nyel
        i++;
        system("cls");
    }
    while(!ok && i < 3); // 3 hibas lehetosegunk van
    return ok;
}

